package br.com.megarobot.mega.impl;

import java.util.Arrays;

import br.com.megarobot.mega.base.MegaDB;
import br.com.megarobot.mega.bean.Mega;

public class ProcessaMegaImpl implements ProcessaMega{

	private int quantidadeDezenas;
	private boolean ordenado;
	private boolean acumulado;
	
	public String processaMega(){
		MegaDB db = new MegaDB();
		int[] posicoes = new int[61];
		int[] maioresDezenas = new int[this.quantidadeDezenas];
		int zerador = 0;
		
		Mega[] vos = db.recuperaTodosResultados();
		for (Mega vo : vos) {
			if(!vo.isAcumulado() && !this.acumulado){
				posicoes[vo.getDezena1()]++;
				posicoes[vo.getDezena2()]++; 
				posicoes[vo.getDezena3()]++;
				posicoes[vo.getDezena4()]++;
				posicoes[vo.getDezena5()]++;
				posicoes[vo.getDezena6()]++;
			}
		}
		
		for (int i = 0; i < maioresDezenas.length; i++) {
			
			int intDez = 0;
			int maior = 0;
			int maiorPosicao = 0;
			posicoes[zerador] = 0;
			
			for (int j = 0; j < posicoes.length; j++) {
				intDez = posicoes[j];
				if(intDez > maior){
					maior = intDez;
					maiorPosicao = j;
				}
			}
			maioresDezenas[i] = maiorPosicao;
			zerador = maiorPosicao;
		}
		
		if(this.ordenado){
			Arrays.sort(maioresDezenas);
		}
		
		StringBuilder sb = new StringBuilder("");
		for (int i = 0; i < maioresDezenas.length; i++) {
			sb.append(maioresDezenas[i]+" ");
		}
		return sb.toString();
	}
	
	

	public ProcessaMegaImpl(int quantidadeDezenas, boolean ordenado,
			boolean acumulado) {
		super();
		this.quantidadeDezenas = quantidadeDezenas;
		this.ordenado = ordenado;
		this.acumulado = acumulado;
	}



	public boolean isOrdenado() {
		return ordenado;
	}

	public void setOrdenado(boolean ordenado) {
		this.ordenado = ordenado;
	}

	public boolean isAcumulado() {
		return acumulado;
	}

	public void setAcumulado(boolean acumulado) {
		this.acumulado = acumulado;
	}

	public int getQuantidadeDezenas() {
		return quantidadeDezenas;
	}

	public void setQuantidadeDezenas(int quantidadeDezenas) {
		this.quantidadeDezenas = quantidadeDezenas;
	}
}
